"""
@Author  : 康帅
@Time    : 2021/3/13 11:13
@Function: 装饰模式与装饰器
"""


"""
装饰器优点：
1.使用装饰模式来实现扩展比使用继承更加灵活，它可以在不创造更多子类的情况下，将对象的功能加以扩展
2.可以动态地给一个对象附加更多的功能
3.可以用不同的装饰器进行多重装饰，装饰的顺序不同，可能产生不同的效果
4.装饰类和被装饰类可以独立发展，不会相互耦合；装饰模式相当于继承的一个替代模式

装饰器缺点：
1.与继承相比，用装饰的方式拓展功能容易出错，排错也更困难。对于多次装饰的对象，调试寻找错误时可能需要逐级排查，较为烦琐

装饰模式与装饰器的区别：
区别点                      python装饰器                                 装饰模式
设计思想             函数式编程思想，也就是面向过程式的思想                面向对象的编程思想      

修饰的对象           可以修饰一个函数，也可以修饰一个类                   修饰的是某个类中指定方法

影响的范畴           修饰一个函数或者一个类，对函数的所有调用              只对修饰的这一个对象起效
                   及类的所有实例都起效果

应用场景：
1.有大量独立的扩展，为支持每一种组合将产生大量的子类，使得子类数目呈爆炸性增长时
2.需要动态地增加或撤销功能时
3.不能采用生成子类的方法进行扩充时，类的定义不能用于生成子类（如Java中的final类）
"""